home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / 4_0 / HYPERXCM / XCMDGLUE.C < prev    next >
Text File  |  1991-10-19  |  8KB  |  309 lines

  1. /*
  2.   XCmdGlue.c   Functions for calling all standard HyperCard callback
  3.   routines from C.  This file derived from Pascal interface.
  4.   
  5.   Note that the arguments are slightly different than Pascal.  The first
  6.   argument is always a pointer to the parameter block that HyperCard
  7.   passed to the XCMD or XFCN.
  8.   
  9.   ⌐Apple Computer, Inc. 1987
  10.   All Rights Reserved.
  11. */
  12.  
  13. /*
  14.   Includes
  15.   Note these header files are for THINK-C development.
  16. */
  17.  
  18. #include <pascal.h>
  19. #include <MacTypes.h>
  20. #include "HyperXCmd.h"
  21.  
  22. pascal void SendCardMessage (paramPtr, msg)
  23.   XCmdBlockPtr paramPtr;
  24.   StringPtr msg;
  25. {
  26.   paramPtr->inArgs[0] = (long) msg;
  27.   paramPtr->request = xreqSendCardMessage;
  28.   DoJsr (paramPtr);
  29. } /*- proc-end: SendCardMessage -*/
  30.  
  31. pascal Handle EvalExpr (paramPtr, expr)
  32.   XCmdBlockPtr paramPtr;
  33.   StringPtr expr;
  34. {
  35.   paramPtr->inArgs[0] = (long) expr;
  36.   paramPtr->request = xreqEvalExpr;
  37.   DoJsr (paramPtr);
  38.   return (Handle) paramPtr->outArgs[0];
  39. } /*- proc-end: EvalExpr -*/
  40.  
  41. pascal long StringLength (paramPtr, strPtr)
  42.   XCmdBlockPtr paramPtr;
  43.   StringPtr strPtr;
  44. {
  45.   paramPtr->inArgs[0] = (long) strPtr;
  46.   paramPtr->request = xreqStringLength;
  47.   DoJsr (paramPtr);
  48.   return (long) paramPtr->outArgs[0];
  49. } /*- proc-end: StringLength -*/
  50.  
  51. pascal Ptr StringMatch (paramPtr, pattern, target)
  52.   XCmdBlockPtr paramPtr;
  53.   StringPtr pattern;
  54.   Ptr target;
  55. {
  56.   paramPtr->inArgs[0] = (long) pattern;
  57.   paramPtr->inArgs[1] = (long) target;
  58.   paramPtr->request = xreqStringMatch;
  59.   DoJsr (paramPtr);
  60.   return (Ptr) paramPtr->outArgs[0];
  61. } /*- proc-end: StringMatch -*/
  62.  
  63. pascal void SendHCMessage (paramPtr, msg)
  64.   XCmdBlockPtr paramPtr;
  65.   StringPtr msg;
  66. {
  67.   paramPtr->inArgs[0] = (long) msg;
  68.   paramPtr->request = xreqSendHCMessage;
  69.   DoJsr (paramPtr);
  70. } /*- proc-end: SendHCMessage -*/
  71.  
  72. pascal void ZeroBytes (paramPtr, dstPtr, Count)
  73.   XCmdBlockPtr paramPtr;
  74.   Ptr dstPtr;
  75.   long Count;
  76. {
  77.   paramPtr->inArgs[0] = (long) dstPtr;
  78.   paramPtr->inArgs[1] = (long) Count;
  79.   paramPtr->request = xreqZeroBytes;
  80.   DoJsr (paramPtr);
  81. } /*- proc-end: ZeroBytes -*/
  82.  
  83. pascal Handle PasToZero (paramPtr, pasStr)
  84.   XCmdBlockPtr paramPtr;
  85.   StringPtr pasStr;
  86. {
  87.   paramPtr->inArgs[0] = (long) pasStr;
  88.   paramPtr->request = xreqPasToZero;
  89.   DoJsr (paramPtr);
  90.   return (Handle) paramPtr->outArgs[0];
  91. } /*- proc-end: PasToZero -*/
  92.  
  93. pascal void ZeroToPas (paramPtr, zeroPtr, pasStr)
  94.   XCmdBlockPtr paramPtr;
  95.   char *zeroPtr;
  96.   StringPtr pasStr;
  97. {
  98.   paramPtr->inArgs[0] = (long) zeroPtr;
  99.   paramPtr->inArgs[1] = (long) pasStr;
  100.   paramPtr->request = xreqZeroToPas;
  101.   DoJsr (paramPtr);
  102. } /*- proc-end: ZeroToPas -*/
  103.  
  104. pascal long StrToLong (paramPtr, strPtr)
  105.   XCmdBlockPtr paramPtr;
  106.   Str31 *strPtr;
  107. {
  108.   paramPtr->inArgs[0] = (long) strPtr;
  109.   paramPtr->request = xreqStrToLong;
  110.   DoJsr (paramPtr);
  111.   return (long) paramPtr->outArgs[0];
  112. } /*- proc-end: StrToLong -*/
  113.  
  114. pascal long StrToNum (paramPtr, strPtr)
  115.   XCmdBlockPtr paramPtr;
  116.   Str31 *strPtr;
  117. {
  118.   paramPtr->inArgs[0] = (long) strPtr;
  119.   paramPtr->request = xreqStrToNum;
  120.   DoJsr (paramPtr);
  121.   return (long) paramPtr->outArgs[0];
  122. } /*- proc-end: StrToNum -*/
  123.  
  124. pascal Boolean StrToBool (paramPtr, strPtr)
  125.   XCmdBlockPtr paramPtr;
  126.   Str31 *strPtr;
  127. {
  128.   paramPtr->inArgs[0] = (long) strPtr;
  129.   paramPtr->request = xreqStrToBool;
  130.   DoJsr (paramPtr);
  131.   return (Boolean) paramPtr->outArgs[0];
  132. } /*- proc-end: StrToBool -*/
  133.  
  134. pascal void StrToExt (paramPtr, strPtr, myext)
  135.   XCmdBlockPtr paramPtr;
  136.   Str31 *strPtr;
  137.   extended *myext;
  138. {
  139.   paramPtr->inArgs[0] = (long) strPtr;
  140.   paramPtr->inArgs[1] = (long) myext;
  141.   paramPtr->request = xreqStrToExt;
  142.   DoJsr (paramPtr);
  143. } /*- proc-end: StrToExt -*/
  144.  
  145. pascal void LongToStr (paramPtr, posNum, mystr)
  146.   XCmdBlockPtr paramPtr;
  147.   long posNum;
  148.   Str31 *mystr;
  149. {
  150.   paramPtr->inArgs[0] = (long) posNum;
  151.   paramPtr->inArgs[1] = (long) mystr;
  152.   paramPtr->request = xreqLongToStr;
  153.   DoJsr (paramPtr);
  154. } /*- proc-end: LongToStr -*/
  155.  
  156. pascal void NumToStr (paramPtr, num, mystr)
  157.   XCmdBlockPtr paramPtr;
  158.   long num;
  159.   Str31 *mystr;
  160. {
  161.   paramPtr->inArgs[0] = (long) num;
  162.   paramPtr->inArgs[1] = (long) mystr;
  163.   paramPtr->request = xreqNumToStr;
  164.   DoJsr (paramPtr);
  165. } /*- proc-end: NumToStr -*/
  166.  
  167. pascal void NumToHex (paramPtr, num, nDigits, mystr)
  168.   XCmdBlockPtr paramPtr;
  169.   long num;
  170.   short int nDigits;
  171.   Str31 *mystr;
  172. {
  173.   paramPtr->inArgs[0] = (long) num;
  174.   paramPtr->inArgs[1] = (long) nDigits;
  175.   paramPtr->inArgs[2] = (long) mystr;
  176.   paramPtr->request = xreqNumToHex;
  177.   DoJsr (paramPtr);
  178. } /*- proc-end: NumToHex -*/
  179.  
  180. pascal void BoolToStr (paramPtr, bool, mystr)
  181.   XCmdBlockPtr paramPtr;
  182.   Boolean bool;
  183.   Str31 *mystr;
  184. {
  185.   paramPtr->inArgs[0] = (long) bool;
  186.   paramPtr->inArgs[1] = (long) mystr;
  187.   paramPtr->request = xreqBoolToStr;
  188.   DoJsr (paramPtr);
  189. } /*- proc-end: BoolToStr -*/
  190.  
  191. pascal void ExtToStr (paramPtr, myext, mystr)
  192.   XCmdBlockPtr paramPtr;
  193.   extended *myext;
  194.   Str31 *mystr;
  195. {
  196.   paramPtr->inArgs[0] = (long) myext;
  197.   paramPtr->inArgs[1] = (long) mystr;
  198.   paramPtr->request = xreqExtToStr;
  199.   DoJsr (paramPtr);
  200. } /*- proc-end: ExtToStr -*/
  201.  
  202. pascal Handle GetGlobal (paramPtr, globName)
  203.   XCmdBlockPtr paramPtr;
  204.   StringPtr globName;
  205. {
  206.   paramPtr->inArgs[0] = (long) globName;
  207.   paramPtr->request = xreqGetGlobal;
  208.   DoJsr (paramPtr);
  209.   return (Handle) paramPtr->outArgs[0];
  210. } /*- proc-end: GetGlobal -*/
  211.  
  212. pascal void SetGlobal (paramPtr, globName, globValue)
  213.   XCmdBlockPtr paramPtr;
  214.   StringPtr globName;
  215.   Handle globValue;
  216. {
  217.   paramPtr->inArgs[0] = (long) globName;
  218.   paramPtr->inArgs[1] = (long) globValue;
  219.   paramPtr->request = xreqSetGlobal;
  220.   DoJsr (paramPtr);
  221. } /*- proc-end: SetGlobal -*/
  222.  
  223. pascal void SetFieldByName (paramPtr, cardFieldFlag, fieldName, fieldVal)
  224.   XCmdBlockPtr paramPtr;
  225.   Boolean cardFieldFlag;
  226.   StringPtr fieldName;
  227.   Handle fieldVal;
  228. {
  229.   paramPtr->inArgs[0] = (long) cardFieldFlag;
  230.   paramPtr->inArgs[1] = (long) fieldName;
  231.   paramPtr->inArgs[2] = (long) fieldVal;
  232.   paramPtr->request = xreqSetFieldByName;
  233.   DoJsr (paramPtr);
  234. } /*- proc-end: SetFieldByName -*/
  235.  
  236. pascal void SetFieldByNum (paramPtr, cardFieldFlag, fieldNum, fieldVal)
  237.   XCmdBlockPtr paramPtr;
  238.   Boolean cardFieldFlag;
  239.   short int fieldNum;
  240.   Handle fieldVal;
  241. {
  242.   paramPtr->inArgs[0] = (long) cardFieldFlag;
  243.   paramPtr->inArgs[1] = (long) fieldNum;
  244.   paramPtr->inArgs[2] = (long) fieldVal;
  245.   paramPtr->request = xreqSetFieldByNum;
  246.   DoJsr (paramPtr);
  247. } /*- proc-end: SetFieldByNum -*/
  248.  
  249. pascal void SetFieldByID (paramPtr, cardFieldFlag, fieldID, fieldVal)
  250.   XCmdBlockPtr paramPtr;
  251.   Boolean cardFieldFlag;
  252.   short int fieldID;
  253.   Handle fieldVal;
  254. {
  255.   paramPtr->inArgs[0] = (long) cardFieldFlag;
  256.   paramPtr->inArgs[1] = (long) fieldID;
  257.   paramPtr->inArgs[2] = (long) fieldVal;
  258.   paramPtr->request = xreqSetFieldByID;
  259.   DoJsr (paramPtr);
  260. } /*- proc-end: SetFieldByID -*/
  261.  
  262. pascal Boolean StringEqual (paramPtr, str1, str2)
  263.   XCmdBlockPtr paramPtr;
  264.   Str31 *str1, *str2;
  265. {
  266.   paramPtr->inArgs[0] = (long) str1;
  267.   paramPtr->inArgs[1] = (long) str2;
  268.   paramPtr->request = xreqStringEqual;
  269.   DoJsr (paramPtr);
  270.   return (Boolean) paramPtr->outArgs[0];
  271. } /*- proc-end: StringEqual -*/
  272.  
  273. pascal void ReturnToPas (paramPtr, zeroStr, pasStr)
  274.   XCmdBlockPtr paramPtr;
  275.   Ptr zeroStr;
  276.   StringPtr pasStr;
  277. {
  278.   paramPtr->inArgs[0] = (long) zeroStr;
  279.   paramPtr->inArgs[1] = (long) pasStr;
  280.   paramPtr->request = xreqReturnToPas;
  281.   DoJsr (paramPtr);
  282. } /*- proc-end: ReturnToPas -*/
  283.  
  284. pascal void ScanToReturn (paramPtr, scanHndl)
  285.   XCmdBlockPtr paramPtr;
  286.   Ptr *scanHndl;
  287. {
  288.   paramPtr->inArgs[0] = (long) scanHndl;
  289.   paramPtr->request = xreqScanToReturn;
  290.   DoJsr (paramPtr);
  291. } /*- proc-end: ScanToReturn -*/
  292.  
  293. pascal void ScanToZero (paramPtr, scanHndl)
  294.   XCmdBlockPtr paramPtr;
  295.   Ptr *scanHndl;
  296. {
  297.   paramPtr->inArgs[0] = (long) scanHndl;
  298.   paramPtr->request = xreqScanToZero;
  299.   DoJsr (paramPtr);
  300. } /*- proc-end: ScanToZero -*/
  301.  
  302. pascal void DoJsr (paramPtr)
  303.   XCmdBlockPtr paramPtr;
  304. { /*- This is THINK-C implementation -*/
  305.   
  306.   CallPascal (paramPtr->entryPoint);
  307.   
  308. } /*- proc-end: DoJsr -*/
  309.